YES 2.612 H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/empty.hs
H-Termination of the given Haskell-Program with start terms could successfully be proven:



HASKELL
  ↳ LR

mainModule Main
  ((scaleFloat :: Int  ->  Float  ->  Float) :: Int  ->  Float  ->  Float)

module Main where
  import qualified Prelude



Lambda Reductions:
The following Lambda expression
\(m,_)→m

is transformed to
m0 (m,_) = m

The following Lambda expression
\(_,n)→n

is transformed to
n0 (_,n) = n



↳ HASKELL
  ↳ LR
HASKELL
      ↳ BR

mainModule Main
  ((scaleFloat :: Int  ->  Float  ->  Float) :: Int  ->  Float  ->  Float)

module Main where
  import qualified Prelude



Replaced joker patterns by fresh variables and removed binding patterns.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
HASKELL
          ↳ COR

mainModule Main
  ((scaleFloat :: Int  ->  Float  ->  Float) :: Int  ->  Float  ->  Float)

module Main where
  import qualified Prelude



Cond Reductions:
The following Function with conditions
power vx 0 = 1.0
power x vy@(y+1) = fromInt x * power x y
power x y = 1.0 / power x (`negate` y)

is transformed to
power vx xw = power4 vx xw
power x vy = power2 x vy
power x y = power0 x y

power0 x y = 1.0 / power x (`negate` y)

power1 True x vy = fromInt x * power x (vy - 1)
power1 wx wy wz = power0 wy wz

power2 x vy = power1 (vy >= 1) x vy
power2 xu xv = power0 xu xv

power3 True vx xw = 1.0
power3 xx xy xz = power2 xy xz

power4 vx xw = power3 (xw == 0) vx xw
power4 yu yv = power2 yu yv

The following Function with conditions
undefined 
 | False
 = undefined

is transformed to
undefined  = undefined1

undefined0 True = undefined

undefined1  = undefined0 False



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
HASKELL
              ↳ LetRed

mainModule Main
  ((scaleFloat :: Int  ->  Float  ->  Float) :: Int  ->  Float  ->  Float)

module Main where
  import qualified Prelude



Let/Where Reductions:
The bindings of the following Let/Where expression
encodeFloat m (n + k)
where 
m  = m0 vu12
m0 (m,vv) = m
n  = n0 vu12
n0 (vw,n) = n
vu12  = decodeFloat x

are unpacked to the following functions on top level
scaleFloatN yw = scaleFloatN0 yw (scaleFloatVu12 yw)

scaleFloatVu12 yw = decodeFloat yw

scaleFloatM0 yw (m,vv) = m

scaleFloatN0 yw (vw,n) = n

scaleFloatM yw = scaleFloatM0 yw (scaleFloatVu12 yw)

The bindings of the following Let/Where expression
fromInteger x * power 2 y
where 
power vx xw = power4 vx xw
power x vy = power2 x vy
power x y = power0 x y
power0 x y = 1.0 / power x (`negate` y)
power1 True x vy = fromInt x * power x (vy - 1)
power1 wx wy wz = power0 wy wz
power2 x vy = power1 (vy >= 1) x vy
power2 xu xv = power0 xu xv
power3 True vx xw = 1.0
power3 xx xy xz = power2 xy xz
power4 vx xw = power3 (xw == 0) vx xw
power4 yu yv = power2 yu yv

are unpacked to the following functions on top level
primFloatEncodePower0 x y = 1.0 / primFloatEncodePower x (`negate` y)

primFloatEncodePower1 True x vy = fromInt x * primFloatEncodePower x (vy - 1)
primFloatEncodePower1 wx wy wz = primFloatEncodePower0 wy wz

primFloatEncodePower2 x vy = primFloatEncodePower1 (vy >= 1) x vy
primFloatEncodePower2 xu xv = primFloatEncodePower0 xu xv

primFloatEncodePower3 True vx xw = 1.0
primFloatEncodePower3 xx xy xz = primFloatEncodePower2 xy xz

primFloatEncodePower4 vx xw = primFloatEncodePower3 (xw == 0) vx xw
primFloatEncodePower4 yu yv = primFloatEncodePower2 yu yv

primFloatEncodePower vx xw = primFloatEncodePower4 vx xw
primFloatEncodePower x vy = primFloatEncodePower2 x vy
primFloatEncodePower x y = primFloatEncodePower0 x y



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
HASKELL
                  ↳ NumRed

mainModule Main
  ((scaleFloat :: Int  ->  Float  ->  Float) :: Int  ->  Float  ->  Float)

module Main where
  import qualified Prelude



Num Reduction: All numbers are transformed to thier corresponding representation with Pos, Neg, Succ and Zero.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
HASKELL
                      ↳ Narrow

mainModule Main
  (scaleFloat :: Int  ->  Float  ->  Float)

module Main where
  import qualified Prelude



Haskell To QDPs


↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
QDP
                            ↳ QDPSizeChangeProof
                          ↳ QDP
                          ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primPlusNat(Succ(yx1300), Succ(yx100000)) → new_primPlusNat(yx1300, yx100000)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
QDP
                            ↳ QDPSizeChangeProof
                          ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primMulNat(Succ(yx50000), Succ(yx10000)) → new_primMulNat(yx50000, Succ(yx10000))

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
QDP
                            ↳ DependencyGraphProof

Q DP problem:
The TRS P consists of the following rules:

new_fs(Float(yx150, yx151), yx300) → new_primFloatEncodePower30(yx300)
new_primFloatEncodePower3(Succ(yx12100), Succ(yx300)) → new_primFloatEncodePower3(yx12100, yx300)
new_primFloatEncodePower2(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower3(Zero, Succ(yx300)) → new_fs(new_fromDouble, yx300)
new_primFloatEncodePower30(Zero) → new_primFloatEncodePower3(Succ(Zero), Succ(Zero))
new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower2(Zero) → new_primFloatEncodePower3(Succ(Zero), Succ(Zero))
new_primFloatEncodePower31(yx300) → new_fs(new_fromDouble, yx300)
new_primFloatEncodePower3(Succ(yx12100), Zero) → new_primFloatEncodePower30(yx12100)

The TRS R consists of the following rules:

new_fromDoubleFloat(Pos(Succ(Zero)), Pos(Succ(Zero)))

The set Q consists of the following terms:

new_fromDouble

We have to consider all minimal (P,Q,R)-chains.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 3 less nodes.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
QDP
                                ↳ Rewriting

Q DP problem:
The TRS P consists of the following rules:

new_fs(Float(yx150, yx151), yx300) → new_primFloatEncodePower30(yx300)
new_primFloatEncodePower3(Succ(yx12100), Succ(yx300)) → new_primFloatEncodePower3(yx12100, yx300)
new_primFloatEncodePower3(Zero, Succ(yx300)) → new_fs(new_fromDouble, yx300)
new_primFloatEncodePower30(Zero) → new_primFloatEncodePower3(Succ(Zero), Succ(Zero))
new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower3(Succ(yx12100), Zero) → new_primFloatEncodePower30(yx12100)

The TRS R consists of the following rules:

new_fromDoubleFloat(Pos(Succ(Zero)), Pos(Succ(Zero)))

The set Q consists of the following terms:

new_fromDouble

We have to consider all minimal (P,Q,R)-chains.
By rewriting [15] the rule new_primFloatEncodePower3(Zero, Succ(yx300)) → new_fs(new_fromDouble, yx300) at position [0] we obtained the following new rules:

new_primFloatEncodePower3(Zero, Succ(yx300)) → new_fs(Float(Pos(Succ(Zero)), Pos(Succ(Zero))), yx300)



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ Rewriting
QDP
                                    ↳ UsableRulesProof

Q DP problem:
The TRS P consists of the following rules:

new_fs(Float(yx150, yx151), yx300) → new_primFloatEncodePower30(yx300)
new_primFloatEncodePower3(Succ(yx12100), Succ(yx300)) → new_primFloatEncodePower3(yx12100, yx300)
new_primFloatEncodePower30(Zero) → new_primFloatEncodePower3(Succ(Zero), Succ(Zero))
new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower3(Zero, Succ(yx300)) → new_fs(Float(Pos(Succ(Zero)), Pos(Succ(Zero))), yx300)
new_primFloatEncodePower3(Succ(yx12100), Zero) → new_primFloatEncodePower30(yx12100)

The TRS R consists of the following rules:

new_fromDoubleFloat(Pos(Succ(Zero)), Pos(Succ(Zero)))

The set Q consists of the following terms:

new_fromDouble

We have to consider all minimal (P,Q,R)-chains.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ Rewriting
                                  ↳ QDP
                                    ↳ UsableRulesProof
QDP
                                        ↳ QReductionProof

Q DP problem:
The TRS P consists of the following rules:

new_fs(Float(yx150, yx151), yx300) → new_primFloatEncodePower30(yx300)
new_primFloatEncodePower3(Succ(yx12100), Succ(yx300)) → new_primFloatEncodePower3(yx12100, yx300)
new_primFloatEncodePower30(Zero) → new_primFloatEncodePower3(Succ(Zero), Succ(Zero))
new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower3(Zero, Succ(yx300)) → new_fs(Float(Pos(Succ(Zero)), Pos(Succ(Zero))), yx300)
new_primFloatEncodePower3(Succ(yx12100), Zero) → new_primFloatEncodePower30(yx12100)

R is empty.
The set Q consists of the following terms:

new_fromDouble

We have to consider all minimal (P,Q,R)-chains.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.

new_fromDouble



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ Rewriting
                                  ↳ QDP
                                    ↳ UsableRulesProof
                                      ↳ QDP
                                        ↳ QReductionProof
QDP
                                            ↳ Instantiation

Q DP problem:
The TRS P consists of the following rules:

new_fs(Float(yx150, yx151), yx300) → new_primFloatEncodePower30(yx300)
new_primFloatEncodePower3(Succ(yx12100), Succ(yx300)) → new_primFloatEncodePower3(yx12100, yx300)
new_primFloatEncodePower30(Zero) → new_primFloatEncodePower3(Succ(Zero), Succ(Zero))
new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower3(Zero, Succ(yx300)) → new_fs(Float(Pos(Succ(Zero)), Pos(Succ(Zero))), yx300)
new_primFloatEncodePower3(Succ(yx12100), Zero) → new_primFloatEncodePower30(yx12100)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By instantiating [15] the rule new_fs(Float(yx150, yx151), yx300) → new_primFloatEncodePower30(yx300) we obtained the following new rules:

new_fs(Float(Pos(Succ(Zero)), Pos(Succ(Zero))), z0) → new_primFloatEncodePower30(z0)



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ Rewriting
                                  ↳ QDP
                                    ↳ UsableRulesProof
                                      ↳ QDP
                                        ↳ QReductionProof
                                          ↳ QDP
                                            ↳ Instantiation
QDP
                                                ↳ ForwardInstantiation

Q DP problem:
The TRS P consists of the following rules:

new_fs(Float(Pos(Succ(Zero)), Pos(Succ(Zero))), z0) → new_primFloatEncodePower30(z0)
new_primFloatEncodePower3(Succ(yx12100), Succ(yx300)) → new_primFloatEncodePower3(yx12100, yx300)
new_primFloatEncodePower30(Zero) → new_primFloatEncodePower3(Succ(Zero), Succ(Zero))
new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower3(Zero, Succ(yx300)) → new_fs(Float(Pos(Succ(Zero)), Pos(Succ(Zero))), yx300)
new_primFloatEncodePower3(Succ(yx12100), Zero) → new_primFloatEncodePower30(yx12100)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By forward instantiating [14] the rule new_primFloatEncodePower3(Succ(yx12100), Succ(yx300)) → new_primFloatEncodePower3(yx12100, yx300) we obtained the following new rules:

new_primFloatEncodePower3(Succ(Succ(y_0)), Succ(Succ(y_1))) → new_primFloatEncodePower3(Succ(y_0), Succ(y_1))
new_primFloatEncodePower3(Succ(Zero), Succ(Succ(y_0))) → new_primFloatEncodePower3(Zero, Succ(y_0))
new_primFloatEncodePower3(Succ(Succ(y_0)), Succ(Zero)) → new_primFloatEncodePower3(Succ(y_0), Zero)



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ Rewriting
                                  ↳ QDP
                                    ↳ UsableRulesProof
                                      ↳ QDP
                                        ↳ QReductionProof
                                          ↳ QDP
                                            ↳ Instantiation
                                              ↳ QDP
                                                ↳ ForwardInstantiation
QDP
                                                    ↳ DependencyGraphProof

Q DP problem:
The TRS P consists of the following rules:

new_fs(Float(Pos(Succ(Zero)), Pos(Succ(Zero))), z0) → new_primFloatEncodePower30(z0)
new_primFloatEncodePower3(Succ(Succ(y_0)), Succ(Succ(y_1))) → new_primFloatEncodePower3(Succ(y_0), Succ(y_1))
new_primFloatEncodePower30(Zero) → new_primFloatEncodePower3(Succ(Zero), Succ(Zero))
new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower3(Succ(Succ(y_0)), Succ(Zero)) → new_primFloatEncodePower3(Succ(y_0), Zero)
new_primFloatEncodePower3(Succ(Zero), Succ(Succ(y_0))) → new_primFloatEncodePower3(Zero, Succ(y_0))
new_primFloatEncodePower3(Zero, Succ(yx300)) → new_fs(Float(Pos(Succ(Zero)), Pos(Succ(Zero))), yx300)
new_primFloatEncodePower3(Succ(yx12100), Zero) → new_primFloatEncodePower30(yx12100)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
The approximation of the Dependency Graph [15,17,22] contains 2 SCCs with 4 less nodes.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ Rewriting
                                  ↳ QDP
                                    ↳ UsableRulesProof
                                      ↳ QDP
                                        ↳ QReductionProof
                                          ↳ QDP
                                            ↳ Instantiation
                                              ↳ QDP
                                                ↳ ForwardInstantiation
                                                  ↳ QDP
                                                    ↳ DependencyGraphProof
                                                      ↳ AND
QDP
                                                          ↳ ForwardInstantiation
                                                        ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower3(Succ(Succ(y_0)), Succ(Zero)) → new_primFloatEncodePower3(Succ(y_0), Zero)
new_primFloatEncodePower3(Succ(yx12100), Zero) → new_primFloatEncodePower30(yx12100)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By forward instantiating [14] the rule new_primFloatEncodePower3(Succ(yx12100), Zero) → new_primFloatEncodePower30(yx12100) we obtained the following new rules:

new_primFloatEncodePower3(Succ(Succ(y_0)), Zero) → new_primFloatEncodePower30(Succ(y_0))



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ Rewriting
                                  ↳ QDP
                                    ↳ UsableRulesProof
                                      ↳ QDP
                                        ↳ QReductionProof
                                          ↳ QDP
                                            ↳ Instantiation
                                              ↳ QDP
                                                ↳ ForwardInstantiation
                                                  ↳ QDP
                                                    ↳ DependencyGraphProof
                                                      ↳ AND
                                                        ↳ QDP
                                                          ↳ ForwardInstantiation
QDP
                                                              ↳ QDPOrderProof
                                                        ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primFloatEncodePower3(Succ(Succ(y_0)), Zero) → new_primFloatEncodePower30(Succ(y_0))
new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
new_primFloatEncodePower3(Succ(Succ(y_0)), Succ(Zero)) → new_primFloatEncodePower3(Succ(y_0), Zero)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].


The following pairs can be oriented strictly and are deleted.


new_primFloatEncodePower30(Succ(yx121000)) → new_primFloatEncodePower3(Succ(Succ(yx121000)), Succ(Zero))
The remaining pairs can at least be oriented weakly.

new_primFloatEncodePower3(Succ(Succ(y_0)), Zero) → new_primFloatEncodePower30(Succ(y_0))
new_primFloatEncodePower3(Succ(Succ(y_0)), Succ(Zero)) → new_primFloatEncodePower3(Succ(y_0), Zero)
Used ordering: Matrix interpretation [3]:
Non-tuple symbols:
M( Succ(x1) ) =
/1\
\0/
+
/10\
\10/
·x1

M( Zero ) =
/0\
\1/

Tuple symbols:
M( new_primFloatEncodePower3(x1, x2) ) = 0+
[0,1]
·x1+
[0,1]
·x2

M( new_primFloatEncodePower30(x1) ) = 1+
[1,0]
·x1


Matrix type:
We used a basic matrix type which is not further parametrizeable.


As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order.
The following usable rules [17] were oriented: none



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ Rewriting
                                  ↳ QDP
                                    ↳ UsableRulesProof
                                      ↳ QDP
                                        ↳ QReductionProof
                                          ↳ QDP
                                            ↳ Instantiation
                                              ↳ QDP
                                                ↳ ForwardInstantiation
                                                  ↳ QDP
                                                    ↳ DependencyGraphProof
                                                      ↳ AND
                                                        ↳ QDP
                                                          ↳ ForwardInstantiation
                                                            ↳ QDP
                                                              ↳ QDPOrderProof
QDP
                                                                  ↳ DependencyGraphProof
                                                        ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primFloatEncodePower3(Succ(Succ(y_0)), Zero) → new_primFloatEncodePower30(Succ(y_0))
new_primFloatEncodePower3(Succ(Succ(y_0)), Succ(Zero)) → new_primFloatEncodePower3(Succ(y_0), Zero)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
The approximation of the Dependency Graph [15,17,22] contains 0 SCCs with 2 less nodes.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ NumRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ Rewriting
                                  ↳ QDP
                                    ↳ UsableRulesProof
                                      ↳ QDP
                                        ↳ QReductionProof
                                          ↳ QDP
                                            ↳ Instantiation
                                              ↳ QDP
                                                ↳ ForwardInstantiation
                                                  ↳ QDP
                                                    ↳ DependencyGraphProof
                                                      ↳ AND
                                                        ↳ QDP
QDP
                                                          ↳ QDPSizeChangeProof

Q DP problem:
The TRS P consists of the following rules:

new_primFloatEncodePower3(Succ(Succ(y_0)), Succ(Succ(y_1))) → new_primFloatEncodePower3(Succ(y_0), Succ(y_1))

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs: